package com.thread.threadfirst.studyThread3;

import java.util.concurrent.ArrayBlockingQueue;
import java.util.concurrent.BlockingQueue;
import java.util.concurrent.TimeUnit;

/**
 * 7、ArrayBlockingQueue 有界的同步阻塞容器
 */
public class T5 {
    static BlockingQueue<String> strs = new ArrayBlockingQueue<>(10);

    public static void main(String[] args) throws InterruptedException {
        for (int i = 0; i < 10; i++) {
            strs.put("a" + i);
        }

        strs.put("aa");  //满了就会等待，程序无限阻塞
//        strs.add("aa");  //满了之后再添加 会抛异常：Queue full
//        boolean tf=strs.offer("aa");  //满了再添加 不会抛异常，而是有个boolean类型的返回值 可判断是否添加成功
//        System.out.println(tf);
//        strs.offer("aa",1, TimeUnit.SECONDS); //尝试添加一段时间，时间过了就不添加了，即按时间段进行阻塞
        System.out.println(strs);
    }
}
